home *** CD-ROM | disk | FTP | other *** search
/ Macworld Expo - Develope…Central & Net Innovations / Developer Central and Net Innovators (MacWorld Expo) (January 1999).iso / Developer Central / Bowers Development / Demo AppMaker / Examples / plain C OS8 / Everything / ModelessCheckboxes.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-10-29  |  7.5 KB  |  245 lines  |  [TEXT/CWIE]

  1. /* ModelessCheckboxes.c -- modeless dialog */
  2.  
  3. #include <Types.h>
  4. #include <Quickdraw.h>
  5. #include <Controls.h>
  6. #include <Dialogs.h>
  7. #include <Events.h>
  8. #include <Lists.h>
  9. #include <Menus.h>
  10. #include <TextEdit.h>
  11. #include <Appearance.h>
  12. #include <stdlib.h>
  13.  
  14. #include "ResourceDefs.h"
  15. #include "Miscellany.h"
  16. #include "ControlUtils.h"
  17.  
  18. #include "Dispatcher.h"
  19. #include "ModelessCheckboxes.h"
  20.  
  21. #define kStandardCheck        1
  22. #define kXxCheck        2
  23. #define kCapTriangleLabel        3
  24. #define kGraphicBox        4
  25. #define kCapcicnLabel        5
  26. #define kLRCheck        6
  27. #define kCapicl8Label        7
  28. #define kLR2Check        8
  29. #define kCapICNLabel        9
  30. #define kLR3Check        10
  31. #define kCapPICTLabel        11
  32. #define kLR4Check        12
  33. #define kCapicl9Label        13
  34. #define kCheckboxCheck        14
  35. #define kBevelBox        15
  36. #define kCheckbox2Check        16
  37. #define kNextCheck        17
  38. #define kNext2Check        18
  39.  
  40.  
  41. //----------
  42. DialogPtr        ModelessCheckboxesDialog = nil;
  43.  
  44. //----------
  45. void    ModelessCheckboxes_Create ()
  46. {
  47.     ModelessCheckboxes*            dialog = NewModelessCheckboxes ();
  48.     DModelessCheckboxesData*        data = NewDModelessCheckboxesData ();
  49.  
  50.     AMDialog_MakeDialog ((AMDialog*)dialog, DLOG_ModelessCheckboxes);
  51.     ModelessCheckboxes_ConnectToData (dialog, (AMSignaler*)data);
  52. }
  53.  
  54. //----------
  55. void    ModelessCheckboxes_Show ()
  56. {
  57.     if (ModelessCheckboxesDialog == nil) {
  58.         ModelessCheckboxes_Create ();
  59.     }
  60.     if (ModelessCheckboxesDialog != nil) {
  61.         SelectWindow (ModelessCheckboxesDialog);
  62.         ShowWindow (ModelessCheckboxesDialog);
  63.     }
  64. }
  65.  
  66. //----------
  67. void    ModelessCheckboxes_Close ()
  68. {
  69.     HideWindow (ModelessCheckboxesDialog);
  70. }
  71.  
  72. //----------
  73. ModelessCheckboxes*        NewModelessCheckboxes ()
  74. {
  75.     ModelessCheckboxes*        dialog;
  76.  
  77.     dialog = (ModelessCheckboxes*)malloc (sizeof (ModelessCheckboxes));
  78.     ModelessCheckboxes_Init (dialog);
  79.     SetClassID (dialog, classModelessCheckboxes);
  80.  
  81.     return dialog;
  82. }
  83.  
  84. //----------
  85. void    DeleteModelessCheckboxes (
  86.     ModelessCheckboxes*        dialog)
  87. {
  88.     ModelessCheckboxes_Free (dialog);
  89.     free (dialog);
  90. }
  91.  
  92. //----------
  93. void    ModelessCheckboxes_Init (
  94.     ModelessCheckboxes*        self)
  95. {
  96.     AMDialog_Init ((AMDialog*)self);
  97. }
  98.  
  99. //----------
  100. void    ModelessCheckboxes_Free (
  101.     ModelessCheckboxes*        self)
  102. {
  103.     AMDialog_Free ((AMDialog*)self);
  104. }
  105.  
  106. //----------
  107. void    ModelessCheckboxes_FinishMake (
  108.     ModelessCheckboxes*        self)
  109. {
  110.     ModelessCheckboxesDialog = ((AMDialog*)self)->mDialog;
  111.  
  112.     self->mStandardHandle = AMDialog_GetControlItem ((AMDialog*)self, kStandardCheck);
  113.     self->mXxHandle = AMDialog_GetControlItem ((AMDialog*)self, kXxCheck);
  114.     self->mGraphicHandle = AMDialog_GetControlItem ((AMDialog*)self, kGraphicBox);
  115.     self->mLRHandle = AMDialog_GetControlItem ((AMDialog*)self, kLRCheck);
  116.     self->mLR2Handle = AMDialog_GetControlItem ((AMDialog*)self, kLR2Check);
  117.     self->mLR3Handle = AMDialog_GetControlItem ((AMDialog*)self, kLR3Check);
  118.     self->mLR4Handle = AMDialog_GetControlItem ((AMDialog*)self, kLR4Check);
  119.     self->mCheckboxHandle = AMDialog_GetControlItem ((AMDialog*)self, kCheckboxCheck);
  120.     self->mBevelHandle = AMDialog_GetControlItem ((AMDialog*)self, kBevelBox);
  121.     self->mCheckbox2Handle = AMDialog_GetControlItem ((AMDialog*)self, kCheckbox2Check);
  122.     SetBevelButtonGraphicAlignment (self->mCheckbox2Handle, kControlBevelButtonAlignCenter, 0, 0);
  123.     self->mNextHandle = AMDialog_GetControlItem ((AMDialog*)self, kNextCheck);
  124.     SetBevelButtonTextPlacement (self->mNextHandle, kControlBevelButtonPlaceToRightOfGraphic);
  125.     SetBevelButtonTextAlignment (self->mNextHandle, kControlBevelButtonAlignTextFlushLeft, 0);
  126.     SetBevelButtonGraphicAlignment (self->mNextHandle, kControlBevelButtonAlignLeft, 0, 0);
  127.     self->mNext2Handle = AMDialog_GetControlItem ((AMDialog*)self, kNext2Check);
  128.     SetBevelButtonTextPlacement (self->mNext2Handle, kControlBevelButtonPlaceBelowGraphic);
  129.     SetBevelButtonTextAlignment (self->mNext2Handle, kControlBevelButtonAlignTextCenter, 0);
  130.     SetBevelButtonGraphicAlignment (self->mNext2Handle, kControlBevelButtonAlignTop, 0, 0);
  131. }
  132.  
  133. //----------
  134. void    ModelessCheckboxes_ConnectToData (
  135.     ModelessCheckboxes*        self,
  136.     AMSignaler*        inData)
  137. {
  138.     AMDialog_ConnectToData ((AMDialog*)self, inData);
  139.     self->mData = (DModelessCheckboxesData*) inData;
  140.  
  141.     SetControlValue (self->mStandardHandle, GetStandard7 (self->mData));
  142.     SetControlValue (self->mXxHandle, GetXx3 (self->mData));
  143.     SetControlValue (self->mLRHandle, GetLR9 (self->mData));
  144.     SetControlValue (self->mLR2Handle, GetLR10 (self->mData));
  145.     SetControlValue (self->mLR3Handle, GetLR11 (self->mData));
  146.     SetControlValue (self->mLR4Handle, GetLR12 (self->mData));
  147.     SetControlValue (self->mCheckboxHandle, GetCheckbox5 (self->mData));
  148.     SetControlValue (self->mCheckbox2Handle, GetCheckbox6 (self->mData));
  149.     SetBevelButtonGraphicAlignment (self->mCheckbox2Handle, kControlBevelButtonAlignCenter, 0, 0);
  150.     SetControlValue (self->mNextHandle, GetNext5 (self->mData));
  151.     SetBevelButtonTextPlacement (self->mNextHandle, kControlBevelButtonPlaceToRightOfGraphic);
  152.     SetBevelButtonTextAlignment (self->mNextHandle, kControlBevelButtonAlignTextFlushLeft, 0);
  153.     SetBevelButtonGraphicAlignment (self->mNextHandle, kControlBevelButtonAlignLeft, 0, 0);
  154.     SetControlValue (self->mNext2Handle, GetNext6 (self->mData));
  155.     SetBevelButtonTextPlacement (self->mNext2Handle, kControlBevelButtonPlaceBelowGraphic);
  156.     SetBevelButtonTextAlignment (self->mNext2Handle, kControlBevelButtonAlignTextCenter, 0);
  157.     SetBevelButtonGraphicAlignment (self->mNext2Handle, kControlBevelButtonAlignTop, 0, 0);
  158. }
  159.  
  160. //----------
  161. void    ModelessCheckboxes_DoItem (
  162.     ModelessCheckboxes*        self,
  163.     SInt16        inItemHit)
  164. {
  165.     switch (inItemHit) {
  166.     case kStandardCheck:
  167.             SetStandard7 (self->mData, ToggleCheckbox (self->mStandardHandle));
  168.         break;
  169.     case kXxCheck:
  170.             SetXx3 (self->mData, ToggleCheckbox (self->mXxHandle));
  171.         break;
  172.     case kLRCheck:
  173.             SetLR9 (self->mData, ToggleCheckbox (self->mLRHandle));
  174.         break;
  175.     case kLR2Check:
  176.             SetLR10 (self->mData, ToggleCheckbox (self->mLR2Handle));
  177.         break;
  178.     case kLR3Check:
  179.             SetLR11 (self->mData, ToggleCheckbox (self->mLR3Handle));
  180.         break;
  181.     case kLR4Check:
  182.             SetLR12 (self->mData, ToggleCheckbox (self->mLR4Handle));
  183.         break;
  184.     case kCheckboxCheck:
  185.             SetCheckbox5 (self->mData, ToggleCheckbox (self->mCheckboxHandle));
  186.         break;
  187.     case kCheckbox2Check:
  188.             SetCheckbox6 (self->mData, GetControlValue (self->mCheckbox2Handle));
  189.         break;
  190.     case kNextCheck:
  191.             SetNext5 (self->mData, GetControlValue (self->mNextHandle));
  192.         break;
  193.     case kNext2Check:
  194.             SetNext6 (self->mData, GetControlValue (self->mNext2Handle));
  195.         break;
  196.  
  197.     } // switch
  198. }
  199.  
  200. //----------
  201. void    ModelessCheckboxes_DataChanged (
  202.     ModelessCheckboxes*        self,
  203.     long        inDataID)
  204. {
  205.     if (inDataID == idStandard7) {
  206.         SetControlValue (self->mStandardHandle, GetStandard7 (self->mData));
  207.     }
  208.     if (inDataID == idXx3) {
  209.         SetControlValue (self->mXxHandle, GetXx3 (self->mData));
  210.     }
  211.     if (inDataID == idLR9) {
  212.         SetControlValue (self->mLRHandle, GetLR9 (self->mData));
  213.     }
  214.     if (inDataID == idLR10) {
  215.         SetControlValue (self->mLR2Handle, GetLR10 (self->mData));
  216.     }
  217.     if (inDataID == idLR11) {
  218.         SetControlValue (self->mLR3Handle, GetLR11 (self->mData));
  219.     }
  220.     if (inDataID == idLR12) {
  221.         SetControlValue (self->mLR4Handle, GetLR12 (self->mData));
  222.     }
  223.     if (inDataID == idCheckbox5) {
  224.         SetControlValue (self->mCheckboxHandle, GetCheckbox5 (self->mData));
  225.     }
  226.     if (inDataID == idCheckbox6) {
  227.         SetControlValue (self->mCheckbox2Handle, GetCheckbox6 (self->mData));
  228.     }
  229.     if (inDataID == idNext5) {
  230.         SetControlValue (self->mNextHandle, GetNext5 (self->mData));
  231.     }
  232.     if (inDataID == idNext6) {
  233.         SetControlValue (self->mNext2Handle, GetNext6 (self->mData));
  234.     }
  235. }
  236.  
  237. //----------
  238. Boolean        ModelessCheckboxes_Filter (
  239.     ModelessCheckboxes*            self,
  240.     EventRecord            *ioEvent,
  241.     DialogItemIndex        *outItemHit)
  242. {
  243.     return AMDialog_Filter ((AMDialog*)self, ioEvent, outItemHit);
  244. }
  245.